/*****************************************************************************/
/*                        >>> PFS.c <<<                                      */
/*	Trabajo Practico 2do. cuatrimestre 2011                                  */
/*	PFS - Proceso File System                                                */
/*	GRUPO: Reduce Fat Fast                                                   */
/*	INTEGRANTES: Emanuel Genovese                                            */
/*               Federico Gabriel Garcia                                     */
/*               Federico Pioli                                              */
/*               Esther Insfrain                                             */
/*               Luciano Bagattin                                            */
/*	Fecha UM:                                                                */
/*****************************************************************************/

/*********************************************************************************/
/****************************Include ********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <signal.h>
#include <sys/un.h>
#include <fuse.h>
#include <fcntl.h>
#include <errno.h>
#include <signal.h>
#include "log.h"
#include "../headers/constantes.h"
#include "../headers/structsPFS.h"
#include "../headers/func_config.h"
#include "../headers/func_pantalla.h"
#include "../headers/func_PFS.h"
#include "func_socket.h"
#include "func_strings.h"
#include "func_ipc.h"
#include "structs_commons.h"

/**************************** Define **********************************************/

/*************************** Comienzo del programa pcpal ***************************/
int main (int argc, char *argv[]){
	/*declaracion de variables globales*/

	datosConfigPPD sIC;
	int iSocket=-1, iEnviados;
	stNIPC stSIPC;
	stNIPC stRIPC;


	/*fin de la declaracion de variables globales*/
	t_log *log =  log_create("Runner", LOG, DEBUG | INFO | WARNING, M_CONSOLE_DISABLE);

	if (argc !=2){
		printf("Error en el ingreso de parametros de ejecucion ./PFS <ruta de montaje file system>");
		log_error(log, SNOMBREPROCESO, "Message error: %s", "Error en la ejecucion del programa ingreso mal los parametros");

	}

	/*Procedemos a cargar nuestra estructura config con los datos del archivo configuracion */

	if ((fLoadConfig(&sIC, log))){
	  printf("No se pudo procesar el archivo de configuracion");
	  log_error(log, SNOMBREPROCESO, "Message error: %s", "No se pudo procesar el archivo de configuracion");
	  log_destroy(log);
	  exit(0);
	}//fin del if
	signal(SIGUSR1, pSIGUSER_handler);
	raise (SIGUSR1);


	/*Se procede a conectarse con el PPD/PRAID*/

	/*if ((iSocket= fConectar( sIC.iPuertoConex,sIC.sIPConex, LOG, SNOMBREPROCESO, log))==-1){
     printf("No se puedo conectar con el PPD/PRAID");
     log_destroy(log);
     return 1;
	}//fin del fConectar*/

     /*stSIPC.iPayloadDescriptor=CONNECT;
     stSIPC.sPayload_lenth=0;
     stSIPC.cType=0;

	 iEnviados=fMandarIPCXsocket(iSocket, stSIPC, log);
	 if (iEnviados>0){
     }//fin del if
	 if(fRecibirIPCXsocket(iSocket, &stRIPC, log)==0){
	   return 0;
	 }//fin del fRecibirIPCXsocket

	 //connect handshake
	 if (stRIPC.iPayloadDescriptor== CONNECT_FAIL){
		 log_error(log, SNOMBREPROCESO, "Message error: %s", "Conectarse con PPD/PRAID - Conexión Rechazada");
	    return 0;
	 } else if (stRIPC.iPayloadDescriptor!=CONNECT_OK) {//Connect OK {
		 log_error(log, SNOMBREPROCESO, "Message error: %s", "Conectarse con PPD/PRAID - Respuesta Desconocida");

	    return 0;
	 }//fin del handshake
*/


	pPantalla(sIC);



	fCerrar(iSocket, LOG, SNOMBREPROCESO, log);
	log_destroy(log);

return 0;
}
